//遍历controllers目录，找出js文件
let fs=require('fs');
let path=require('path');
let router=require('koa-router')();


//寻找指定路径下的路由文件
function searchControllers(defaultDir) {
    //利用文件模块 读取控制器目录下所有文件
    let files=fs.readdirSync(defaultDir);
    //筛选真实的路径文件
    let resultFiles=files.filter((fileName)=>{
        return fileName.endsWith('.js') && fileName !=='index.js';
    });
    return resultFiles;
}

//注册给定的路由数组下的所有定义的路由
function registeForEachFile(files) {
    files.forEach(ele=>{
        let tmpFile = require(path.join(__dirname,ele));
        for(let key in tmpFile){
            let type = tmpFile[key][0];
            let value = tmpFile[key][1];

            if(type === 'get'){
                router.get(key,value);
            }else if(type === 'post'){
                router.post(key,value);
            }
        }
    })
}


module.exports=function (dir) {
    let defaultDir=dir || '/consdfds'
    //项目当前绝对路径
    let root=path.resolve('.');
    //获得控制器的绝对路径
    let resultControllerPath=path.join(root,defaultDir);
    //获得控制器目录下的所有路由文件
    let files=searchControllers(resultControllerPath);
    //注册定义路由
    registeForEachFile(files,resultControllerPath);
    //返回呆在App执行的注册函数
    return router.routes();
}


